如何在 C# 中使用系統繪圖影像進行 OCR 處理

How to Read from System.Drawing Objects

This article was translated from English: Does it need improvement?
Translated
View the article in English

System.Drawing.Bitmap 是 .NET Framework 中用於處理點陣圖圖像的類。 它提供了創建、操縱和顯示點陣圖圖像的方法和屬性。

System.Drawing.Image 是 .NET Framework 中所有 GDI+ 圖像對象的基類。 它是各種圖像類型的父類,包括 System.Drawing.Bitmap

IronSoftware.Drawing.AnyBitmapIronDrawing 中的一個點陣圖類,是由 Iron Software 最初開發的開源庫。 它幫助 C# 軟體工程師在 Windows、macOS 和 Linux 平台上替換 .NET 項目中的 System.Drawing.Common

快速入門:從 System.Drawing.Bitmap 讀取文字

只需一句簡單的聲明,創建一個 IronTesseract 並將它包裝到 OcrImageInputSystem.Drawing.Bitmap 中以提取所有文字。 這個快速入門示例展示了 IronOCR 如何輕鬆地將您的圖像轉換為可讀文字,並且設定最少。

Nuget IconGet started making PDFs with NuGet now:

  1. Install IronOCR with NuGet Package Manager

    PM > Install-Package IronOcr

  2. Copy and run this code snippet.

    var result = new IronOcr.IronTesseract().Read(new IronOcr.OcrImageInput(new System.Drawing.Bitmap("image.png")));
  3. Deploy to test on your live environment

    Start using IronOCR in your project today with a free trial
    arrow pointer
class="hsg-featured-snippet">

最小工作流程(5 步)

  1. 下載用於讀取 System.Drawing 對象的 C# 庫
  2. 獲取例如 Bitmap 和 Image 這類 System.Drawing 對象
  3. 使用獲得的數據構造 OcrImageInput 類
  4. 在 Linux 和 macOS 上使用來自 Iron Software 的 AnyBitmap
  5. 通過指定裁剪區域來定義讀取範圍


讀取 System.Drawing.Bitmap 示例

首先,實例化IronTesseract類以進行OCR。 從多種方法中創建一個 System.Drawing.Bitmap。 在代碼示例中,我決定使用文件路徑。

接下來,使用 using 聲明創建 OcrImageInput 對象,並將圖像從 System.Drawing.Bitmap 對象傳入。 最後,使用Read方法進行OCR。

:path=/static-assets/ocr/content-code-examples/how-to/input-system-drawing-read-bitmap.cs
using IronOcr;
using System.Drawing;

// Instantiate IronTesseract
IronTesseract ocrTesseract = new IronTesseract();

// Read image file to Bitmap
Bitmap bitmap = new Bitmap("Potter.tiff");

// Import System.Drawing.Bitmap
using var imageInput = new OcrImageInput(bitmap);
// Perform OCR
OcrResult ocrResult = ocrTesseract.Read(imageInput);
Imports IronOcr
Imports System.Drawing

' Instantiate IronTesseract
Private ocrTesseract As New IronTesseract()

' Read image file to Bitmap
Private bitmap As New Bitmap("Potter.tiff")

' Import System.Drawing.Bitmap
Private imageInput = New OcrImageInput(bitmap)
' Perform OCR
Private ocrResult As OcrResult = ocrTesseract.Read(imageInput)
$vbLabelText   $csharpLabel

讀取 System.Drawing.Image 示例

System.Drawing.Image 讀取就像創建包含圖像的 OcrImageInput 對象,然後使用標準的 OCR 流程中的 Read 方法。

:path=/static-assets/ocr/content-code-examples/how-to/input-system-drawing-read-image.cs
using IronOcr;
using Image = System.Drawing.Image;

// Instantiate IronTesseract
IronTesseract ocrTesseract = new IronTesseract();

// Open image file as Image
Image image = Image.FromFile("Potter.tiff");

// Import System.Drawing.Image
using var imageInput = new OcrImageInput(image);
// Perform OCR
OcrResult ocrResult = ocrTesseract.Read(imageInput);
Imports IronOcr
Imports Image = System.Drawing.Image

' Instantiate IronTesseract
Private ocrTesseract As New IronTesseract()

' Open image file as Image
Private image As Image = Image.FromFile("Potter.tiff")

' Import System.Drawing.Image
Private imageInput = New OcrImageInput(image)
' Perform OCR
Private ocrResult As OcrResult = ocrTesseract.Read(imageInput)
$vbLabelText   $csharpLabel

讀取 IronSoftware.Drawing.AnyBitmap 示例

同樣,在創建或獲取 AnyBitmap 對象後,您可以構造 OcrImageInput 類。 構造函數將負責進口數據的所有必要步驟。 下面的代碼示例展示了這一點。

:path=/static-assets/ocr/content-code-examples/how-to/input-system-drawing-read-anybitmap.cs
using IronOcr;
using IronSoftware.Drawing;

// Instantiate IronTesseract
IronTesseract ocrTesseract = new IronTesseract();

// Open image file as AnyBitmap
AnyBitmap anyBitmap = AnyBitmap.FromFile("Potter.tiff");

// Import IronSoftware.Drawing.AnyBitmap
using var imageInput = new OcrImageInput(anyBitmap);
// Perform OCR
OcrResult ocrResult = ocrTesseract.Read(imageInput);
Imports IronOcr
Imports IronSoftware.Drawing

' Instantiate IronTesseract
Private ocrTesseract As New IronTesseract()

' Open image file as AnyBitmap
Private anyBitmap As AnyBitmap = AnyBitmap.FromFile("Potter.tiff")

' Import IronSoftware.Drawing.AnyBitmap
Private imageInput = New OcrImageInput(anyBitmap)
' Perform OCR
Private ocrResult As OcrResult = ocrTesseract.Read(imageInput)
$vbLabelText   $csharpLabel

指定掃描區域

在構造 OcrImageInput 類時,您可以指定要掃描的區域。 這使您可以定義圖像文檔的特定區域以進行 OCR。 根據圖像文檔,指定掃描區域可以顯著提高性能。 在提供的代碼示例中,我指定應該僅提取章節號和標題。

:path=/static-assets/ocr/content-code-examples/how-to/input-images-read-specific-region.cs
using IronOcr;
using IronSoftware.Drawing;
using System;

// Instantiate IronTesseract
IronTesseract ocrTesseract = new IronTesseract();

// Specify crop region
Rectangle scanRegion = new Rectangle(800, 200, 900, 400);

// Add image
using var imageInput = new OcrImageInput("Potter.tiff", ContentArea: scanRegion);
// Perform OCR
OcrResult ocrResult = ocrTesseract.Read(imageInput);

// Output the result to console
Console.WriteLine(ocrResult.Text);
Imports IronOcr
Imports IronSoftware.Drawing
Imports System

' Instantiate IronTesseract
Private ocrTesseract As New IronTesseract()

' Specify crop region
Private scanRegion As New Rectangle(800, 200, 900, 400)

' Add image
Private imageInput = New OcrImageInput("Potter.tiff", ContentArea:= scanRegion)
' Perform OCR
Private ocrResult As OcrResult = ocrTesseract.Read(imageInput)

' Output the result to console
Console.WriteLine(ocrResult.Text)
$vbLabelText   $csharpLabel

OCR 結果

class="content-img-align-center">
class="center-image-wrapper"> 閱讀特定區域

常見問題解答

如何在C#中從點陣圖影像中提取文字?

您可以使用 IronOCR,先建立一個IronTesseract類別的實例。然後,建立一個System.Drawing.Bitmap並將其傳遞給OcrImageInput物件。最後,使用Read方法提取文字。

從 System.Drawing 物件讀取資料以執行 OCR 任務涉及哪些步驟?

若要使用 IronOCR 讀取 System.Drawing 對象,請下載函式庫,取得 System.Drawing 對象,建構OcrImageInput類,並依需求定義裁切區域。為了在 Linux 和 macOS 上實現跨平台相容性,請使用AnyBitmap

如何對 System.Drawing.Image 執行 OCR?

若要對System.Drawing.Image執行 OCR,請使用影像建立OcrImageInput對象,並在 IronOCR 中執行Read方法。

在跨平台專案中使用 AnyBitmap 有什麼好處?

IronSoftware.Drawing.AnyBitmap 讓開發人員可以使用跨平台解決方案取代System.Drawing.Common ,從而在 Windows、macOS 和 Linux 上啟用 OCR 功能。

掃描區域如何提高OCR效能?

透過在OcrImageInput類別中定義特定的掃描區域,您可以將 OCR 工作集中在相關區域,從而顯著提高效能和準確性。

IronOCR 是否相容於 Linux 和 macOS?

是的,使用 IronSoftware.Drawing.AnyBitmap 時,IronOCR 與 Linux 和 macOS 相容,為 OCR 任務提供跨平台解決方案。

如何指定影像中用於 OCR 的掃描區域?

在 IronOCR 中,透過在OcrImageInput類別中設定座標和尺寸來指定掃描區域,這可以透過專注於相關的影像部分來增強 OCR 效能。

在.NET OCR專案中處理影像,哪些類別是必不可少的?

在 .NET OCR 專案中, System.Drawing.BitmapSystem.Drawing.ImageIronSoftware.Drawing.AnyBitmap等類別對於處理映像至關重要。

Curtis Chau
技術作家

Curtis Chau 擁有卡爾頓大學計算機科學學士學位,專注於前端開發,擅長於 Node.js、TypeScript、JavaScript 和 React。Curtis 熱衷於創建直觀且美觀的用戶界面,喜歡使用現代框架並打造結構良好、視覺吸引人的手冊。

除了開發之外,Curtis 對物聯網 (IoT) 有著濃厚的興趣,探索將硬體和軟體結合的創新方式。在閒暇時間,他喜愛遊戲並構建 Discord 機器人,結合科技與創意的樂趣。

審核人

A PHP Error was encountered

Severity: Warning

Message: Illegal string offset 'name'

Filename: sections/author_component.php

Line Number: 70

Backtrace:

File: /var/www/ironpdf.com/application/views/main/sections/author_component.php
Line: 70
Function: _error_handler

File: /var/www/ironpdf.com/application/libraries/Render.php
Line: 63
Function: view

File: /var/www/ironpdf.com/application/views/products/sections/three_column_docs_page_structure.php
Line: 64
Function: main_view

File: /var/www/ironpdf.com/application/libraries/Render.php
Line: 88
Function: view

File: /var/www/ironpdf.com/application/views/products/how-to/index.php
Line: 2
Function: view

File: /var/www/ironpdf.com/application/libraries/Render.php
Line: 88
Function: view

File: /var/www/ironpdf.com/application/libraries/Render.php
Line: 552
Function: view

File: /var/www/ironpdf.com/application/controllers/Products/Howto.php
Line: 31
Function: render_products_view

File: /var/www/ironpdf.com/index.php
Line: 292
Function: require_once

">

A PHP Error was encountered

Severity: Warning

Message: Illegal string offset 'title'

Filename: sections/author_component.php

Line Number: 84

Backtrace:

File: /var/www/ironpdf.com/application/views/main/sections/author_component.php
Line: 84
Function: _error_handler

File: /var/www/ironpdf.com/application/libraries/Render.php
Line: 63
Function: view

File: /var/www/ironpdf.com/application/views/products/sections/three_column_docs_page_structure.php
Line: 64
Function: main_view

File: /var/www/ironpdf.com/application/libraries/Render.php
Line: 88
Function: view

File: /var/www/ironpdf.com/application/views/products/how-to/index.php
Line: 2
Function: view

File: /var/www/ironpdf.com/application/libraries/Render.php
Line: 88
Function: view

File: /var/www/ironpdf.com/application/libraries/Render.php
Line: 552
Function: view

File: /var/www/ironpdf.com/application/controllers/Products/Howto.php
Line: 31
Function: render_products_view

File: /var/www/ironpdf.com/index.php
Line: 292
Function: require_once

A PHP Error was encountered

Severity: Warning

Message: Illegal string offset 'comment'

Filename: sections/author_component.php

Line Number: 85

Backtrace:

File: /var/www/ironpdf.com/application/views/main/sections/author_component.php
Line: 85
Function: _error_handler

File: /var/www/ironpdf.com/application/libraries/Render.php
Line: 63
Function: view

File: /var/www/ironpdf.com/application/views/products/sections/three_column_docs_page_structure.php
Line: 64
Function: main_view

File: /var/www/ironpdf.com/application/libraries/Render.php
Line: 88
Function: view

File: /var/www/ironpdf.com/application/views/products/how-to/index.php
Line: 2
Function: view

File: /var/www/ironpdf.com/application/libraries/Render.php
Line: 88
Function: view

File: /var/www/ironpdf.com/application/libraries/Render.php
Line: 552
Function: view

File: /var/www/ironpdf.com/application/controllers/Products/Howto.php
Line: 31
Function: render_products_view

File: /var/www/ironpdf.com/index.php
Line: 292
Function: require_once